package com.zhuzhe.blog.question.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhuzhe.blog.base.BaseRequest;
import com.zhuzhe.blog.base.ResponseData;
import com.zhuzhe.blog.question.entity.Question;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhuzhe.blog.question.requestDto.QuestionDto;
import com.zhuzhe.blog.question.requestDto.QuestionThumhupDto;
import com.zhuzhe.blog.question.requestDto.QuestionUserDto;
import com.zhuzhe.blog.question.responseVo.QuestionPageVo;
import com.zhuzhe.blog.question.responseVo.QuestionVo;


import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 问题信息表 服务类
 * </p>
 *
 * @author u53
 * @since 2020-10-08
 */
public interface IQuestionService extends IService<Question> {

    /**
     * 分页查询热门问答列表
     * @param req 分页参数
     * @return
     */
    ResponseData<IPage<QuestionPageVo>> findHotList(BaseRequest<Question> req);

    /**
     * 分页查询最新问答列表
     * @param req
     * @return
     */
    ResponseData<IPage<QuestionPageVo>> findNewList(BaseRequest<Question> req);

    /**
     * 分页查询等待回答列表
     * @param req
     * @return
     */
    ResponseData<IPage<QuestionPageVo>> findWaitList(BaseRequest<Question> req);

    /**
     * 根据标签id分页查询问题列表
     * @param baseRequest 分页相关的对象
     * @param labelId 标签id
     * @return
     */
    ResponseData<IPage<QuestionPageVo>> findListByLabelId(BaseRequest<Question> baseRequest, String labelId);

    /**
     * 通过问题id查询详情
     * @param id 问题id
     * @return
     */
    ResponseData<QuestionVo> findById(String id, String userId);

    /**
     * 更新问题浏览数
     * @param id 问题id
     * @return
     */
    ResponseData<String> updateViewCount(String id , HttpServletRequest request);

    /**
     * 修改或新增问题数据
     * @param questionDto
     * @return
     */
    ResponseData<String>  updateOrSave(QuestionDto questionDto);

    /**
     * 假删除，只是装饰状态更新为 0 ，表示删除
     * @param id 问题id
     * @return
     */
    ResponseData<String> deleteById(String id);

    /**
     * 更新点赞数
     * @return
     */
    ResponseData<String> updateThumhup(QuestionThumhupDto questionThumhupDto);

    /**
     * 根据用户id查询问题列表
     * @param questionUserDto
     * @return
     */
    ResponseData<IPage<QuestionPageVo>> findListByUserId(QuestionUserDto questionUserDto);

    /**
     * 统计提问总记录
     * @return
     */
    ResponseData<Integer> getQuestionTotal();

    /**
    * 采纳问题
    */
    ResponseData<String> adoptionQuetion(String id, String replyid);
}
